/**
 * $version:  0.1 
 * $Date: 2011-01-21 
 *
 * Copyright (C) 2010-2011 Jawa Software. All rights reserved.
 *
 */
package org.jawa.learning.webapp.listener;

import java.io.File;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.apache.commons.lang.StringUtils;
import org.jawa.core.JawaServer;
import org.jawa.core.util.JawaGlobals;

/**
 * 应用启动的时候使用的监听器，用于设置系统启动后使用的一些参数。 以及进行部份初始化工作。
 * <p>
 * 1、设置log4j日志文件所在目录
 * </p>
 * <p>
 * 2、设置应用工作的主目录
 * </p>
 * <p>
 * 3、启动服务器
 * </p>
 * 
 * @author Y-N
 * 
 */
public class StartupListener implements ServletContextListener {

	/**
	 * 应用初始化.
	 */
	public void contextInitialized(ServletContextEvent event) {

		System.out.println(StringUtils.center(" learning 系统正在启动", 60, "*"));

		ServletContext context = event.getServletContext();

		// 初始化系统运行环境
		initParameters(context);

		JawaServer server = new JawaServer();

		System.out.println(StringUtils.center(" learning 系统初始化完成", 60, "*"));

	}

	/**
	 * 初始化系统环境
	 * 
	 * @param sc
	 */
	private void initParameters(ServletContext sc) {

		String webPath = sc.getRealPath("/");

		// 设置log4j日志文件所在目录
		System.setProperty("JawaHome", webPath);

		// 设置系统工作主目录
		JawaGlobals.setHomeDirectory(webPath);

		//设置系统配置文件
		JawaGlobals.setConfigName("conf" + File.separator + "learning.xml");

	}

	/**
	 * 应用销毁时进行清理工作
	 */
	public void contextDestroyed(ServletContextEvent event) {
		if (null != JawaServer.getInstance()) {
			JawaServer.getInstance().stop();
		}
	}

}
